紐づいた別のモデルのフィールドを結合する

class TestController < ApplicationController
  def index
    @employees = Employee.joins(:sales).select('name, sales.amount')
  end
end
別のモデルのデータを埋め込んで取得するには、
モデル.joins(:埋め込むモデル).select(取得するフィールド)

の形式で記入します。

上の例では、EmployeeモデルにSaleモデルを結合し、EmployeeモデルのnameフィールドとSaleモデルのamountフィールドのデータを取得しています。

joinで結合時には結合するモデルのデータがないものは取得しません。
上の例だと紐づいたSaleモデルのないemployeeのデータは取得しません。

紐づいたモデルのデータがないものも取得したいときは
モデル.left_joins(:埋め込むモデル).select(取得するフィールド)

の形式で記入してください。

また、このようにデータを結合していて、取得したフィールドのデータのみを使用するときはN+1問題も発生しないのでincludesを使用する必要がありません。